package com.yourenbang.lingyun.transaction.web.domain.dto.fund;

import com.yourenbang.lingyun.constants.enums.fund.AccountMainJournalType;
import com.yourenbang.lingyun.core.base.validator.EnumValue;
import com.yourenbang.lingyun.core.util.json.ToJSON;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;

@Data
public class ManageChangeFundDTO implements Serializable, ToJSON {

    /**
     * 提现减帐操作
     */
    public static final Integer SUBTRACT_AMOUNT = 0;

    /**
     * 加帐操作
     */
    public static final Integer ADD_AMOUNT = 1;

    /**
     * 加帐冲正操作
     */
    public static final Integer REVERSAL_AMOUNT = 2;

    /**
     * 冻结
     */
    public static final Integer FREE_AMOUNT = 3;

    /**
     * 解冻
     */
    public static final Integer UNFREE_AMOUNT = 4;

    /**
     * 用户手机号
     */
    @NotNull
    private String userPhone;

    /**
     * 账户类型
     */
    @NotNull
    private Integer accountType;

    /**
     * 改变金额
     */
    private BigDecimal changeAmount;

    /**
     * 账单类型 {@link com.yourenbang.lingyun.constants.enums.FundBillType}
     */
    @NotNull
    private Short billType;


    /**
     * 资金总类型 {@link com.yourenbang.lingyun.constants.enums.fund.AccountMainJournalType}
     */
    @EnumValue(enumClass = AccountMainJournalType.class, message = "资金类型异常", allowNull = true)
    private Integer accountMainJournalType;

    /**
     * 加减账标识<br/>
     * 加账: {@link ManageChangeFundDTO#ADD_AMOUNT}<br/>
     * 提现减帐: {@link ManageChangeFundDTO#SUBTRACT_AMOUNT}<br/>
     * 加帐冲正: {@link ManageChangeFundDTO#REVERSAL_AMOUNT}
     */
    @NotNull
    private Integer changeFundFlag;

    /**
     * 备注
     */
    private String detail;

    /**
     * 操作人
     */
    private String operator;

    /**
     * 平台号
     */
    private Short platNo;


}
